#pragma once

#include "GL/glew.h"

class OpenGLObject
{
public:
	OpenGLObject();
	virtual ~OpenGLObject();

	virtual void Bind() = 0;
	virtual void Unbind() = 0;
	virtual unsigned int GetType() const = 0;

	unsigned int GetID() const { return Id; }
	operator GLuint() const { return Id; }

protected:
	unsigned int Id = 0;
};

#define GL_CLASS_TYPE(type) virtual unsigned int GetType()const override{ return type;}
